using System;
using System.ComponentModel;

namespace Locator.Silverlight.Client.Models.StoresServiceReference
{
    public interface IStoresServiceAsync : IStoresService
    {
        void GetPersonalLocationsForCurrentUserAsync();
        event EventHandler<GetPersonalLocationsForCurrentUserCompletedEventArgs> GetPersonalLocationsForCurrentUserCompleted;

        void DeleteStoreForCurrentUserAsync(int storeNumber);
        event EventHandler<AsyncCompletedEventArgs> DeleteStoreForCurrentUserCompleted;

        void AddStoreForCurrentUserAsync(int storeNumber);
        event EventHandler<AsyncCompletedEventArgs> AddStoreForCurrentUserCompleted;

        void AllCitiesAsync();
        event EventHandler<AllCitiesCompletedEventArgs> AllCitiesCompleted;

        void FindStoresByLatitudeAndLongitudeAsync(decimal latitude, decimal longitude, int radiusInKm);
        event EventHandler<FindStoresByLatitudeAndLongitudeCompletedEventArgs> FindStoresByLatitudeAndLongitudeCompleted;

        void FindStoresByPersonalLocationAsync(int personalLocationId, int radiusInKm);
        event EventHandler<FindStoresByPersonalLocationCompletedEventArgs> FindStoresByPersonalLocationCompleted;

        void FindStoresByPostalCodeAsync(string postalCode, int radiusInKm);
        event EventHandler<FindStoresByPostalCodeCompletedEventArgs> FindStoresByPostalCodeCompleted;

        void FindStoresInCityAsync(string cityName);
        event EventHandler<FindStoresInCityCompletedEventArgs> FindStoresInCityCompleted;

        void GetStoresForCurrentUserAsync();
        event EventHandler<GetStoresForCurrentUserCompletedEventArgs> GetStoresForCurrentUserCompleted;
    }
}